Modification of three-dimensional garments using gestures

ABSTRACT

Techniques for modifying a garment based on gestures are presented herein. An access module can access a first set of sensor data from a first sensor, and a second set of sensor data from a second sensor. A garment simulation module can generate a three-dimensional (3D) garment model of a garment available for sale draped on an avatar based on the first set of sensor data and the second set of sensor data. A display module can cause a presentation, on a display of a device, of the 3D garment model draped on the avatar. Additionally, the garment simulation module can determine a modification gesture associated with the 3D garment model draped on the avatar based on the first set of sensor data and the second set of sensor data. Furthermore, the garment simulation module can modify the 3D garment model based on the determined modification gesture.

RELATED APPLICATION

This application is a continuation of and claims priority to U.S. patentapplication Ser. No. 14/675,241 filed Mar. 31, 2015, the entirety ofwhich is incorporated herein by reference.

TECHNICAL FIELD

The present application relates generally to the technical field of dataprocessing, specifically, three-dimensional (3D) modeling andsimulation.

BACKGROUND

Shopping for clothes in physical stores can be an arduous task and, dueto travelling and parking, can be very time consuming. With the adventof online shopping, consumers can purchase clothing, while staying home,via a computer or any other electronic device connected to the Internet.Additionally, purchasing clothes online can be different in comparisonwith purchasing clothes in a store. One difference is the lack of aphysical dressing room to determine if and how an article of clothingfits the particular consumer. Since different consumers can havedifferent dimensions, seeing how an article of clothing fits, by use ofa dressing room, can be a very important aspect of a successful andsatisfying shopping experience.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a schematic diagram illustrating an example system forgenerating and modifying a 3D garment model, in accordance with certainexample embodiments.

FIG. 2 is a flow diagram of a process for modifying a garment based on agesture, in accordance with certain example embodiments.

FIG. 3 is a flow diagram of a process for transmitting a modificationrequest based on a confirmation gesture, in accordance with certainexample embodiments.

FIG. 4 is a flow diagram of a process for draping a 3D garment model onan avatar, in accordance with certain example embodiments.

FIG. 5 is a flow diagram of a process for determining a modificationgesture based on sensor data, in accordance with certain exampleembodiments.

FIG. 6 illustrates a method of facilitating the online purchase ofgarments, in accordance with example embodiments.

FIG. 7 illustrates a method of facilitating the online purchase ofgarments, in accordance with example embodiments.

FIG. 8 is a block diagram illustrating components of a machine,according to some example embodiments, able to read instructions from amachine-readable medium and perform any one or more of the methodologiesdiscussed herein.

DESCRIPTION OF EMBODIMENTS

Example systems and methods are directed to modifying (e.g., tailoring)garments in a virtual fitting room based a gesture from a user.Provision of a virtual fitting room can include recognition of a gesturerepresenting a command to initiate an action on behalf of a user.Examples merely illustrate possible variations. Unless explicitly statedotherwise, components and functions are optional and can be combined orsubdivided, and operations can vary in sequence or be combined orsubdivided. In the following description, for purposes of explanation,numerous specific details are set forth to provide a thoroughunderstanding of example embodiments. It will be evident to one skilledin the art, however, that the present subject matter can be practicedwithout these specific details.

According to some embodiments, a system can display (e.g., on anaugmented reality headset, virtual reality headset, television screen,computer screen, or mobile device screen) a representation of a garment(hereinafter “three-dimensional (3D) garment model”) draped on arepresentation of a user (hereinafter “avatar”). The 3D garment draped(e.g., mapped) on the avatar can allow the user to virtually try on agarment available for sale in a virtual dressing room. The garment canalso include other items that are related to clothing, such as footwear,purses, jewelry, or accessories.

One example of such action is a system that allows a user to purchasegarments using an electronic marketplace. For example, the user finds agarment in the electronic marketplace and adds the garment in a virtualdressing room. Then, using sensors, the system can generate an avatarcorresponding to the user. Additionally, a 3D garment modelcorresponding to the garment is accessed and draped on the avatar. The3D garment model draped on a mirrored self of the user (e.g., avatar)can be presented to the augmented reality or virtual reality gogglesworn by the user. The user can adjust the size of the garment using amodification gesture. The modification gesture is captured by thesensors and determined by the system. For example, the user can try alarger size of the garment by using a pinching and pulling gesture.Subsequently, the user can accept the larger-sized garment using aconfirmation gesture. Alternatively, the garment can be custom-tailored(e.g., the sleeves shortened) by the user using modification gestures.

In some instances, the 3D garment model is representative of realclothing available for purchase using an electronic marketplace. Forexample, the user can virtually try on the garment available for salewhile the user is in his home (e.g., using a virtual reality headset),or in front of a store (e.g., using a virtual store front).

In various example embodiments, the system can generate an avatar basedon a first and second set of sensor data accessed from a first sensorand second sensor. In some instances, the avatar can be furthergenerated based on a third set of sensor data accessed from a thirdsensor. Additionally, the system can drape the 3D garment model on theavatar. The system can also determine a gesture performed by the user,and that the gesture represents a command to initiate an action tomodify the 3D garment model. Examples of such actions that correspond touser gestures include a pinching and pulling gesture, a pinching andtucking gesture, a hand stretching gesture, a hand pinching gesture, ahand nipping gesture, and so on.

By way of examples, the pinching gesture can be the finger motion ofbringing two fingers together. The stretching gesture can be the fingermotion of bringing two fingers apart. The pulling gesture can be thehand motion of pulling a garment section to elongate the garmentsection. For example, the pinching and pulling gesture is thecombination of the pinching gesture and the pulling gesture, which canbe bringing the two fingers together, then pulling a section of thegarment using a hand motion to elongate it. The tucking gesture caninclude tucking in one or more fingers, or tucking the whole hand insidea part of the garment so that the hand is not visible. The hand nippinggesture includes using a hand to squeeze a part of the body. In someinstances, one or more of these gestures can be combined using one orboth hands.

In some example embodiments, the system can prompt the user to confirmthat the gesture represents the command (e.g., the user intended toissue the command when making the gesture). Based on the user confirmingthat the gesture represents the command, the system can modify (e.g.,tailor) the 3D garment on behalf of the user. Examples of a confirmationgesture include repeating the gesture, making a general gestureassociated with confirmation (e.g., an “okay” gesture by connecting thethumb and forefinger in a circle and holding the other fingersstraight), or issuing a voice command.

In various example embodiments, the user can employ a particular gestureto change the color, pattern, or texture of a representation of thegarment the user is virtually trying on. In various example embodiments,the 3D garment model can include garments that the user is currentlywearing. In certain example embodiments, the 3D garment model caninclude garments that are being offered for sale by a merchant.

In some example embodiments, the system can receive sensor datadescriptive of the body of the user in a 3D physical space. The sensordata can be received from a sensor (e.g., depth sensor). The system cangenerate an avatar of the user based on the sensor data descriptive ofthe body of the user. The avatar can also include a first shape based onthe sensor data received at a first time and a second shape based on thesensor data received at a second time. Then, the determining of thegesture can be performed by analyzing a difference between the first andsecond shapes. The system can also determine and perform an action thatcorresponds to the gesture.

In some example embodiments, the system, using a depth sensor,determines the user's body measurements based on positional data pointsdetermined by the system based on the sensor data captured by the depthsensor. The system can pre-filter the garments whose representationsshould be presented to the user such that only representations ofgarments matching the user's body measurements can be presented to theuser. For example, if the system determines that the user wears amedium-sized shirt based on the measurements of the user's body, thenthe system presents medium-sized shirts to the user.

In various example embodiments, the system can use cloth physicstechnology to drape a 3D garment model on an avatar based on a materialproperty of the garment. The material property can reflect the featuresof the fabric from which the garment was made. For example, garmentsmade from different fabrics can hang or move differently based on thetype of fabric used to manufacture the particular garment. Thus, usingcloth physics technology in draping 3D garments on the avatar allows auser to see how the real physical item of clothing would move when wornby the user.

In some example embodiments, the sensor data can be used to generate(e.g., represent, model, or define) a 3D field of view that can bedisplayed on a screen (e.g., of an augmented reality headset, virtualreality headset, television, computer, or mobile device). Examples ofsuch sensor data include the locations and shapes of objects in relationto the location of the sensor. In various example embodiments, based onthe received sensor data, the system can determine details of theobjects in the room, such as spatial measurements of the objects in theroom (e.g., of the user's body or of the furniture in the room). In someexample embodiments, based on the received sensor data, the system candetermine gestures made by the user. Some devices (e.g., that caninclude a depth sensor and a camera) can detect other details of theobjects in the room (e.g., texture, color, or pattern of the clothingworn by the user or of a wall of the room).

Reference will now be made in detail to various example embodiments,some of which are illustrated in the accompanying drawings. In thefollowing detailed description, numerous specific details are set forthin order to provide a thorough understanding of the present disclosureand the described embodiments. However, the present disclosure can bepracticed without these specific details.

FIG. 1 is a schematic diagram illustrating an example system forgenerating and modifying a 3D garment model, in accordance with certainexample embodiments. The network environment 100 includes memory 110, adatabase 115, an electronic marketplace 120, and devices 130 and 140,all communicatively coupled to each other through a network 150.

In some example embodiments, the memory 110, or a computer-readablestorage medium of the memory 110, stores the following programs,modules, and data structures, or a subset thereof: a garment simulationmodule 111, an access module 112, and a display module 113.

In some example embodiments, the database 115 can include an assetlibrary to store 2D or 3D representations of body types and bodymeasurements associated with a user, as well as 2D or 3D representationsof clothing items (e.g., garments or other objects).

As shown in FIG. 1, the memory 110, the database 115, the electronicmarketplace 120, some, or all of them, can form all or part of anetwork-based system 105. The network-based system 105 can include oneor more processing units (CPUs) for executing software modules,programs, or instructions stored in the memory 110 and therebyperforming processing operations; one or more communications interfaces;and one or more communication buses for interconnecting thesecomponents. The communication buses can include circuitry (e.g., achipset) that interconnects and controls communications between systemcomponents. The network-based system 105 also optionally includes apower source and a controller coupled to the database 115. Thenetwork-based system 105 optionally includes a user interface comprisinga display device and a keyboard.

Also shown in FIG. 1 are users 132 and 142. One or both of the users 132and 142 can be a human user (e.g., a human being), a machine user (e.g.,a computer configured by a software program to interact with the device130 or device 140), or any suitable combination thereof (e.g., a humanassisted by a machine or a machine supervised by a human). The user 132is not part of the network environment 100, but is associated with thedevice 130 and can be the user of the device 130. For example, thedevice 130 can be an augmented reality headset, a virtual realityheadset, a desktop computer, a vehicle computer, a tablet computer, anavigational device, a portable media device, or a smartphone belongingto the user 132. Likewise, the user 142 is not part of the networkenvironment 100, but is associated with the device 140. As an example,the device 140 can be an augmented reality headset, a virtual realityheadset, a desktop computer, a vehicle computer, a tablet computer, anavigational device, a portable media device, or a smartphone belongingto the user 142. An example of an augmented reality headset is theMicrosoft HoloLens® headset. An example of a virtual reality headset isthe Oculus Rift® headset.

Also shown in FIG. 1 are sensors 134, 136, and 138 (e.g., a Kinect™device, a depth sensor, a smartphone, or a camera). In some instances,the sensor 134 includes a depth sensor, a red-green-blue (RGB) camera,and a microphone. The system (e.g., the network environment 100) caninclude one or more sensors. In some example embodiments, one or more ofthe sensors 134, 136, or 138 can be part of the device 130. In otherexample embodiments, the sensors 134, 136, or 138 can be external to thedevice 130. Each sensor 134, 136, and 138 can capture (e.g., receive,gather, or collect) sensor data (e.g., spatial data) about the physicalspace external to the sensor (e.g., spatial data about the user 132) andtransmit the captured sensor data to the device 130, which in turn cantransmit some or all of the sensor data captured by the sensor 134, 136,or 138 to the garment simulation module 111 via the network 150. In someexample embodiments, the sensor 134, 136, or 138 can communicate withand send the captured sensor data to the garment simulation module 111via the network 150 without first sending the sensor data to the device130.

The network 150 can be any network that enables communication between oramong machines, databases, and devices (e.g., the garment simulationmodule 111 and the device 130). Accordingly, the network 150 can be awired network, a wireless network (e.g., a mobile or cellular network),or any suitable combination thereof. The network 150 can include one ormore portions that constitute a private network, a public network (e.g.,the Internet), or any suitable combination thereof. Accordingly, thenetwork 150 can include one or more portions that incorporate a localarea network (LAN), a wide area network (WAN), the Internet, a mobiletelephone network (e.g., a cellular network), a wired telephone network(e.g., a plain old telephone system (POTS) network), a wireless datanetwork (e.g., a Wi-Fi network or a WiMAX network), or any suitablecombination thereof. Any one or more portions of the network 150 cancommunicate information via a transmission medium. As used herein,“transmission medium” refers to any intangible (e.g., transitory) mediumthat is capable of communicating (e.g., transmitting) instructions forexecution by a machine (e.g., by one or more processors of such amachine), and includes digital or analog communication signals or otherintangible media to facilitate communication of such software.

The memory 110 can include high-speed random-access memory, such asdynamic random-access memory (DRAM), static random-access memory (SRAM),double data rate random-access memory (DDR RAM), or other random-accesssolid state memory devices. Additionally, the memory 110 can includenon-volatile memory, such as one or more magnetic disk storage devices,optical disk storage devices, flash memory devices, or othernon-volatile solid state storage devices. The memory 110 can optionallyinclude one or more storage devices remotely located from the CPU. Thememory 110, or alternately the non-volatile memory device within thememory 110, can be or include a non-transitory computer-readable storagemedium.

The garment simulation module 111 can generate an avatar (e.g., 3D bodymodel) based on the accessed sensor data from the sensors 134, 136, or138. In some instances, the garment simulation module 111 can positionthe avatar inside a 3D garment model of a garment available for sale.Moreover, the garment simulation module 111 can calculate simulatedforces acting on the 3D garment model based on the positioning of theavatar inside the 3D garment model and the material property of thegarment. The garment simulation module 111 can generate an image of the3D garment model draped on the avatar based on the sensor data or thecalculated simulated forces. The simulated forces can be calculated, forexample, by the garment simulation module 111, based on 3D garmenttessellation techniques.

The access module 112 can communicate with devices (e.g., the device 130or the device 140) via the one or more communications interfaces (e.g.,wired or wireless), the network 150, other wide area networks, localarea networks, metropolitan area networks, and so on. Additionally, theaccess module 112 can access information for the memory 110 via acommunication bus. The access module 112 can access information storedin the database 115. Additionally, when the 3D garment models or avataris stored in the device 130, the access module 112 can access the user'sinformation in the device 130 via the network 150. Alternatively, whenthe 3D garment models or avatar is stored on a cloud server, the accessmodule 112 can access the user's information in the cloud server via thenetwork 150.

The display module 113 is configured to cause presentation of thegenerated image on a display of a device (e.g., device 130). Forexample, the display module 113 can present a 3D image or simulation onthe display of virtual reality goggles. The 3D simulation can be basedon the actions of the garment simulation module 111 and the accessmodule 112.

Any of the machines, databases, or devices shown in FIG. 1 can beimplemented in a general-purpose computer modified (e.g., configured orprogrammed) by software to be a special-purpose computer to perform thefunctions described herein for that machine, database, or device. Forexample, the garment simulation module 111, the access module 112, thedisplay module 113, the database 115, the electronic marketplace 120,and the devices 130 and 140 can beeach be implemented in a computersystem, in whole or in part, as described below with respect to FIG. 8.As used herein, a “database” is a data storage resource and can storedata structured as a text file, a table, a spreadsheet, a relationaldatabase (e.g., an object-relational database), a triple store, ahierarchical data store, or any suitable combination thereof. Moreover,any two or more of the machines, databases, or devices illustrated inFIG. 1 can be combined into a single machine, and the functionsdescribed herein for any single machine, database, or device can besubdivided among multiple machines, databases, or devices.

FIG. 2 is a flowchart representing a method 200 for modifying a 3Dgarment based on gestures of a user, according to example embodiments.The method 200 is governed by instructions stored in a computer-readablestorage medium and that are executed by one or more processors of thenetwork-based system 105. Each of the operations shown in FIG. 2 cancorrespond to instructions stored in a computer memory (e.g., memory110) or computer-readable storage medium.

Operations in the method 200 can be performed by the garment simulationmodule 111, the access module 112, or the display module 113. As shownin FIG. 2, the method 200 includes operations 210, 220, 230, 240, 250,260, and 270. The garment simulation module 111 can configure aprocessor among the network-based system 105 to perform the operationsof the method 200.

At operation 210, the access module 112 accesses a first set of sensordata from a first sensor. The first sensor is located at a firstlocation, such as in front of the user. The first sensor can be acamera, a depth sensor, a heat sensor, a radar sensor, an acousticsensor, and so on. The first set of sensor data can include spatial datareceived from the first sensor (e.g., sensor 134). The access module 112accesses (e.g., receives) the sensor data obtained from the sensor 134.The sensor data can include spatial data about the physical spaceexternal to the sensor. In some instances, the sensor data istransmitted to the device 130, which in turn can transmit some or all ofthe sensor data to the network-based system 105 via the network 150. Insome other instances, the sensor 134 can communicate with and send thecaptured sensor data to the network-based system 105 via the network 150without first sending the sensor data to the device 130.

In some instances, the first set of sensor data includes 2D rangeimages. A 2D range image can have pixel values corresponding to distanceinformation for an object in relation to the first sensor, which can belocated in front of the user. For example, pixel values corresponding toa blue color variation can be associated with an object farther awayfrom the first sensor, while pixel values corresponding to red colorvariation can be associated with an object that is closer to the firstsensor.

At operation 220, the access module 112 accesses a second set of sensordata from a second sensor. The second sensor can be a camera, a depthsensor, a heat sensor, a radar sensor, an acoustic sensor, and so on.The second sensor is located at a second location which is differentthan the first location. For example, the second location can be behindthe user. The access module 112 accesses (e.g., receives) the sensordata obtained from the second sensor (e.g., sensor 136). In someinstances, the second set of sensor data is transmitted to the device130, which in turn can transmit some or all of the sensor data to thenetwork-based system 105 via the network 150. In some other instances,the sensor 136 can communicate with and send the second set of sensordata to the network-based system 105 via the network 150 without firstsending the sensor data to the device 130.

In some instances, the second set of sensor data includes 2D rangeimages having pixel values corresponding to distance information for anobject in relation to the second sensor. The second sensor can belocated behind the user. Alternatively, when three sensors are used, thesensors can be located in a triangular perimeter around the user. Animplementation with three sensors can include a first sensor located infront of the user (e.g., 12 o'clock position of a 12-hour clock), asensor located behind and to the right of the user (e.g., 4 o'clockposition of a 12-hour clock), and the third sensor located behind andthe left of the user (e.g., 8 o'clock position of a 12-hour clock).

In some instances, the accessing of the first set of sensor data fromthe first sensor is performed by a wireless transceiver.

At operation 230, the garment simulation module 111 generates a 3Dgarment model of a garment available for sale draped on an avatar. The3D garment model and the avatar are generated based on the first set ofsensor data and the second set of sensor data. FIG. 4 further describestechniques for generating the avatar and the 3D garment model based onthe first and second sets of sensor data.

In some instances, the avatar can be generated by stitching a 2Drepresentation of the front of a body profile together with a 2Drepresentation of the back of the body profile. Then the 3D garmentmodel is draped on the avatar based on calculated simulated forces.

Additionally, the 3D garment model can be a tessellated 3D garmentmodel. The tessellated 3D garment model can include a group of verticesassociated with points on the surface of the garment. The garment pointscan be generated using a tessellation technique. For example, a shirtcan be tessellated with triangles (e.g., about 20,000 triangles when atriangle edge is around 1 centimeter), and the vertices of the trianglescan be the garment points of the 3D garment model. The garment pointscan include location information such as an x, y, and z position value.The simulated forces which are discussed in FIG. 4 (e.g., at operation440) can be calculated for each garment point. U.S. Non-Provisionalapplication Ser. No. 14/270,244 filed on May 5, 2014, which isincorporated herein by reference, describes techniques for generating atessellated 3-D garment model.

The garment simulation module 111 can position at least a portion of theavatar inside the garment points. In some instances, positioning caninclude placing the garment model on or around the avatar. In theseinstances, the garment model can be stretched and deformed based on thesimulation. As previously mentioned, the garment model can consist of aset of shapes (e.g., triangles) to form the surface of the garmentmodel. The shapes can be created using lines connecting the vertices.Additionally, the garment model can include physical propertiesassociated with the lines (e.g., edges) and vertices in the tessellated3D garment model.

The garment simulation module 111 can simulate the garment model on thegenerated user avatar. In some instances, simulation of the garment caninclude placing the garment around the avatar at an appropriateposition, and running simulations. The simulation can advance theposition and other related variables of the vertices of the garmentmodel based on different criteria (e.g., the laws of physics, garmentmaterial properties, body-garment interaction). The result is a largesystem of equations (e.g., one variable for each force component) thatthe garment simulation module 111 can solve in an iterative fashion. Thesimulation can be completed when the simulation becomes stable. Forexample, the simulation can become stable when the garment model reachesa steady state with a net force of zero. The U.S. Non-Provisionalapplication Ser. No. 14/270,244 filed on May 5, 2014, which has beenpreviously incorporated herein by reference, describes techniques forthe garment simulation module 111 to simulate the garment model on thegenerated user avatar using a large system of equations.

At operation 240, the display module 113 causes a presentation, on adisplay of a device, of the 3D garment model draped on the avatar. Insome instances, the device can be a virtual reality headset.Additionally, the device can be the device 130 or the device 140.Furthermore, the avatar can correspond to a body model of the user 132,and the 3D garment draped on the avatar can be presented to either theuser 132 or the user 142.

In addition to presenting the 3D garment model draped on the avatar, thesensor data can be used to generate a 3D field of view that can bedisplayed on the display of the device. In various example embodiments,based on the received sensor data, the system can determine details ofthe objects in the room, such as spatial measurements of the objects inthe room (e.g., of the furniture in the room).

In some instances, the generating of the 3D garment model draped on theavatar is performed by a graphics processing unit.

At operation 250, the garment simulation module 111 determines amodification gesture associated with the 3D garment model draped on theavatar based on the first set of sensor data and the second set ofsensor data. The modification can include modifying the existing garmentthat is draped on the avatar, such as altering the garment based on themodification gesture. In some instances, the modification gesture isconfined to the existing garment. FIG. 5 further describes techniquesfor determining the modification gesture.

For example, the garment simulation module 111 determines that theavatar has a first shape based on the sensor data received at a firsttime. Additionally, the garment simulation module 111 determines asecond shape for the avatar based on the sensor data received at asecond time, which occurs after the first time. Then, the determining ofthe gesture can be performed by analyzing a difference between the firstand second shapes. By analyzing the difference between the first andsecond shapes, the garment simulation module 111 determines themodification gesture performed by the user, and that the modificationgesture represents a command to initiate an action to modify the 3Dgarment model. Examples of such actions that correspond to user gesturesinclude a pinching and pulling gesture, a pinching and tucking gesture,a hand stretching gesture, a hand pinching gesture, a hand nippinggesture, and so on. By way of examples, the pinching gesture can be thefinger motion of bringing two fingers together. The stretching gesturecan be the finger motion of bringing two fingers apart. The pullinggesture can be the hand motion of pulling a garment section to elongatethe garment section. For example, the pinching and pulling gesture isthe combination of the pinching gesture and the pulling gesture, whichcan be bringing the two fingers together, then pulling a section of thegarment using a hand motion to elongate it. The tucking gesture caninclude tucking in one or more fingers, or tucking the whole hand insidea part of the garment so that the hand is not visible. The hand nippinggesture includes using a hand to squeeze a part of the body. In someinstances, one or more of these gestures can be combined using one orboth hands.

At operation 260, the garment simulation module 111 modifies the 3Dgarment model based on the determined modification gesture. For example,based on the modification gesture, a section of the garment model (e.g.,sleeve length, leg length, waist size, neck size) can be shortened,reduced, enlarged, or lengthened. Additionally, the fit of the garment(e.g., altering a shirt) can be changed based on the modificationgesture.

At operation 270, the display module 113 updates the presentation, onthe display of the device, of the modified 3D garment model draped onthe avatar.

In some instances, the method 200 can further include accessing a thirdset of sensor data from a third sensor. The first sensor, the secondsensor, and the third sensor are positioned in a triangle configuration,such as an equilateral triangle configuration. Additionally, thegenerating of the 3D garment model draped on the avatar at operation 230is further based on the third set of sensor data. Furthermore, thedetermining of the modification gesture at operation 250 is furtherbased on the third set of sensor data.

In some instances, the garment simulation module 111 can prompt the userto confirm that the gesture represents the command (e.g., the userintended to issue the command when making the gesture). Based on theuser confirming that the gesture represents the command, the system canmodify (e.g., tailor) the 3D garment on behalf of the user.

FIG. 3 is a flowchart representing a method 300 for confirming amodification of a garment (e.g., physical garment), according to exampleembodiments. The method 300 is governed by instructions stored in acomputer-readable storage medium and that are executed by one or moreprocessors of the network-based system 105. Each of the operations shownin FIG. 3 can correspond to instructions stored in a computer memory(e.g., memory 110) or computer-readable storage medium. Operations inthe method 300 can be performed by the garment simulation module 111,the access module 112, or the display module 113. As shown in FIG. 3,the method 300 includes operations 310 and 320.

At operation 310, the garment simulation module 111 determines aconfirmation gesture for the 3D garment model modified at operation 260.The confirmation gesture is based on the first set of sensor data andthe second set of sensor data. The confirmation gesture can bedetermined using similar techniques to those later described by method500.

For example, continuing with the example described at operation 250, thegarment simulation module 111 can determine that the avatar has a thirdshape based on the sensor data received at a third time. Additionally,the garment simulation module 111 determines a fourth shape for theavatar based on the sensor data received at a fourth time, the fourthtime being after the third time.

For example, the first shape is of the user standing still in front ofthe sensors. The second shape can be associated with the user performingthe hand modification gesture. The third shape can once again be theuser standing still in front of the sensors. The fourth shape can beassociated with the user performing the hand confirmation gesture.

The determining of the confirmation gesture can be performed byanalyzing a difference between the third and fourth shapes. By analyzingthe difference between the third and fourth shapes, the garmentsimulation module 111 determines the confirmation gesture performed bythe user.

Examples of a confirmation gesture include repeating the modificationgesture, making a general gesture associated with confirmation (e.g.,“okay” gesture by connecting the thumb and forefinger in a circle andholding the other fingers straight), or issuing a voice command.

At operation 320, the garment simulation module 111 transmits a requestto modify the garment available for sale based on the confirmationgesture determined at operation 310. For example, the request istransmitted to the electronic marketplace 120 to modify (e.g., tailor)the garment based on the modification gesture received by the user.

In some instances, the garment simulation module 111 sends custom sizinginformation to a manufacturer when the manufacturer-predefined sizes donot fit the customer correctly. Subsequently, the garment simulationmodule 111 can request the manufacturer to open a custom order for thecustomer.

FIGS. 4 and 5 further describe techniques initially described in FIG. 2,according to example embodiments. FIG. 4 is a flowchart furtherdescribing operation 230 of FIG. 2. FIG. 5 is a flowchart furtherdescribing operation 250 of FIG. 2.

FIG. 4 is a flowchart describing a method 400 for generating the 3Dgarment draped on the avatar based on the first and second sets ofsensor data, according to example embodiments. The method 400 isgoverned by instructions stored in a computer-readable storage mediumand that are executed by one or more processors of the network-basedsystem 105. Each of the operations shown in FIG. 4 can correspond toinstructions stored in a computer memory (e.g., memory 110) orcomputer-readable storage medium. Operations in the method 400 can beperformed by the garment simulation module 111, the access module 112,or the display module 113. As shown in FIG. 4, the method 400 includesoperations 410, 420, 430, 440 and 450.

At operation 410, the garment simulation module 111 generates an avatarbased on the first set of sensor data and the second set of sensor data.As previously mentioned, the first set of sensor data and the second setof sensor data are accessed at operations 210 and 220. The garmentsimulation module 111 accesses sensor data descriptive of the body ofthe user (e.g., waist size, chest size, height, arm length, leg length)in a 3D physical space. The sensor data can be received from a sensor.The garment simulation module 111 generates the avatar of the user basedon the sensor data descriptive of the body of the user.

In some instances, in order to reduce the rendering or processing time,the garment simulation module 111 can generate an avatar for the userbased on a body profile. For example, based on the sensor data, datadescriptive of the body of the user (e.g., waist size, chest size,height, arm length, leg length) can be measured. Then, the avatar can begenerated based on the measured body parameters. Additionally, when thebody profile includes a plurality of computed measurements (e.g.,waistband size, high hip, low hip, thigh, knee, an inseam length, a fit,a cut), the generated avatar becomes a more accurate representation ofthe user.

At operation 420, the garment simulation module 111 determines a sizefor the garment available for sale based on the generated avatar. Forexample, the garment simulation module 111 using the accessed sensordata can determine positional data points. Additionally, the garmentsimulation module 111 determines the user's body measurements based onpositional data points.

In some instances, the garment simulation module 111 can be configuredto determine a size from a set of sizes for the garment based on thesimulated forces which are described later at operation 440. Forexample, the garment simulation module 111 can initially recommend asize, and then calculate simulated forces based on the initialrecommendation, and update the size recommendation based on thecalculated simulated forces in an iterative process. Accordingly, thedisplay module 113 can present the garment model with a recommended sizeto the user. Furthermore, the garment simulation module 111 candetermine a recommended size based on the available garment sizes storedin the database 115 or the electronic marketplace 120.

Techniques for recommending a size from the given set of sizes for agarment are provided, in accordance with example embodiments. Forexample, tops are usually distributed in a few generic sizes (e.g., XS,S, M, L, XL, XXL). By computing the calculated forces for each size forthe user's avatar, the garment simulation module 111 can suggest arecommended size. The recommended size can be based on the size thatbest fits the avatar's dimensions, or the recommendation could be basedon the garment fit guidance from a manufacturer, designer, or stylist.

At operation 430, the garment simulation module 111 accesses the 3Dgarment model. The 3D garment model can be stored in a garment modeldatabase stored in an electronic marketplace. For example, theelectronic marketplace can maintain a database of garments available forsale. Additionally, the 3D garment model can include metadatainformation, such as a material property of the garment (e.g.,elasticity, stiffness, fabric of garment, weight), price information,available quantity information, size information, fitting features(e.g., based on manufacturer), and so on. In some instances, the garmentsimulation module 111 pre-filters the garments to be presented to theuser such that only 3D garment models matching the body measurements arepresented to the user. For example, if the garment simulation module 111determines that the user wears a medium-sized shirt based on the bodymeasurements, then the display module 113 presents medium-sized shirtsdraped on the avatar of the user.

In some instances, the metadata information for the 3D garment model caninclude one or more model features. A model feature, which is an exampleof a fitting feature, refers to characteristics that are distinctive tothe specific garment. For example, when the garment is a pair of jeans,the fitting features can include a waistband, a high hip (e.g., 3″ downfrom top of waistband), a low hip (e.g., 6″ down from top of waistband),a thigh measurement (e.g., circumference), a knee measurement, an inseamlength, a fit (e.g., slim, normal, loose), and a cut (boot cut, relaxed,skinny, taper, straight). The list of model features is justrepresentative, and is not intended to be exhaustive.

At operation 440, the garment simulation module 111 can calculatesimulated forces acting on the 3D garment based on the material propertyof the garment. For example, the avatar generated at operation 410 ispositioned inside the 3D garment model accessed at operation 430, andthe simulated forces based on the positioning can be calculated. Forexample, the simulated forces can be calculated for each garment pointin a tessellated 3D garment model.

In some instances, the garment simulation module 111 can use clothphysics technology to generate a 3D representation of a garment based onthe material property of the garment. The material property can reflectthe features of the fabric from which the garment was made. For example,garments made from different fabrics can hang or move differently basedon the type of fabric used to manufacture the particular garment.

In some example embodiments, the simulated force can include agravitational force, an elastic force, a friction force, or anaerodynamic force. Additionally, the garment simulation module 111 canfurther calculate the simulated forces acting on a subset of the garmentpoints based on material properties of the garment. For example, thesimulated forces can include a gravitational force and an elastic force,and the material properties of the garment can indicate a degree towhich the garment is elastic. The material properties of the garment caninclude, but are not limited to, a sheerness value, a linear stiffnessvalue, and a bending stiffness value.

At operation 450, the garment simulation module 111 drapes the 3Dgarment model on the avatar based on the calculated forces. Thecalculated forces and the cloth physics technology allows the user tosee how the real physical item of clothing moves when worn by the user.In some instances, the garment simulation module 111 can generate animage of the 3D model descriptive of the garment draped on the generatedavatar based on the calculated simulated forces. The garment simulationmodule 111 can configure at least a graphics processing unit to generatethe image. The 3D model can be presented based on a simulated force. Thepresentation can be done by digitally draping the 3D model onto theavatar. Optionally, the display module 113 can present the generatedavatar to a user. The display module 113 can present the generated imageon a display of a device. The display module 113 can configure a userinterface for the presentation.

FIG. 5 is a flowchart describing a method 500 for determining a gesture,according to example embodiments. The method 500 is governed byinstructions stored in a computer-readable storage medium and that areexecuted by one or more processors of the network-based system 105. Eachof the operations shown in FIG. 5 can correspond to instructions storedin a computer memory (e.g., memory 110) or computer-readable storagemedium. Operations in the method 500 can be performed by the garmentsimulation module 111, the access module 112, or the display module 113.As shown in FIG. 5, the method 500 includes operations 510 and 520.

As previously mentioned, the first set of sensor data and the second setof sensor data are accessed at operations 210 and 220. The first set ofsensor data includes initial sensor data received at a first time periodand final sensor data received at a second time period, the second timeperiod being after the first time period. The second set of sensor datacan also include initial sensor data received at a first time period andfinal sensor data received at a second time period.

At operation 510, the garment simulation module 111 detects a differencebetween the initial sensor data and the final sensor data. For example,the garment simulation module 111 generates a first model based on theinitial sensor data. Additionally, the garment simulation module 111generates a second model based on the final sensor data. Then, thegarment simulation module 111 detects a difference between the firstmodel and the second model.

At operation 520, the garment simulation module 111 can determine amodification gesture based on the difference detected at operation 510.The difference between the first and second models corresponds to agesture performed by the user between the first time period and thesecond time period. The gesture represents a command to modify thegarment available for sale in the electronic marketplace on behalf ofthe user.

In some instances, the modification gesture is a hand pulling gesture.Additionally, the modifying the 3D garment model at operation 260 caninclude elongating a section of the 3D garment model based on the handpulling gesture.

In some instances, the modification gesture is a hand stretchinggesture. Additionally, the modifying the 3D garment model at operation260 can include elongating a section of the 3D garment model based onthe hand stretching gesture.

In some instances, the modification gesture is a hand pinching gesture.Additionally, the modifying the 3D garment model at operation 260 caninclude shortening a section of the 3D garment model based on the handstretching gesture.

In some instances, the modification gesture is a pinching and pullinggesture. Additionally, the modifying the 3D garment model at operation260 can include converting the 3D garment model to a smaller size basedon the pinching and pulling gesture.

In some instances, the modification gesture is a pinching and tuckinggesture. Additionally, the modifying the 3D garment model at operation260 can include converting the 3D garment model to a larger size basedon the pinching and tucking gesture.

Additionally, the garment simulation module 111 can determine aconfirmation gesture using similar techniques to those described atoperations 510 and 520. For example, the garment simulation module 111can prompt the user to confirm that the gesture represents the command(e.g., the user intended to issue the command when making the gesture).Based on the user confirming that the gesture represents the command,the garment simulation module 111 can initiate the action within theelectronic marketplace on behalf of the user.

Although individual operations of the methods 200, 300, 400, and 500 areillustrated and described as separate operations, one or more of theindividual operations can be performed concurrently, or omitted from themethods. Additionally, the operations can be performed in a differentorder. These and other variations, modifications, additions, andimprovements fall within the scope of the subject matter herein.

According to various example embodiments, one or more of themethodologies described herein can facilitate the online purchase ofgarments. As illustrated in FIG. 6, some example embodiments describedherein can generate an avatar of a customer 610 based on accessed sensordata from operations 210 and 220. Additionally, a 3D garment model of agarment for sale 620 can be accessed at operation 430. Subsequently, the3D garment model can be draped on the avatar 630 at operation 450.Furthermore, the customer can modify the 3D garment using a modificationgesture, and confirm the modification using a confirmation gesture.

Moreover, one or more of the methodologies described herein canfacilitate the visualization of different styles of a garment on theavatar using the garment simulation module 111. For example, FIG. 7illustrates how a customer can visualize the look and feel of differentpairs of khakis. In this example, the customer can visualize that thesignature khaki 710 is a looser fit, in comparison to the alpha khaki.Additionally, the customer can visualize how the fire-brush-coloredalpha khaki 720 and the new-British-colored alpha khaki 730 look inrelation to the customer's avatar. For example, the avatar can includecharacteristics of the customer, such as skin tone, hair style, and soon.

According to various example embodiments, one or more of themethodologies described herein can facilitate the online purchase ofgarments. Additionally, embodiments can support the in-store purchase ofgarments using digital techniques to convey the same information withoutthe user necessarily being online.

When these effects are considered in aggregate, one or more of themethodologies described herein can obviate a need for certain efforts orresources that otherwise would be involved in determining bodymeasurements of a user. Efforts expended by a user in generatinguser-specific body models can be reduced by one or more of themethodologies described herein. Computing resources used by one or moremachines, databases, or devices (e.g., within the network-based system105) can similarly be reduced. Examples of such computing resourcesinclude processor cycles, network traffic, memory usage, data storagecapacity, power consumption, and cooling capacity.

FIG. 8 is a block diagram illustrating components of a machine 800,according to some example embodiments, able to read instructions 824from a machine-readable medium 822 (e.g., a non-transitorymachine-readable medium, a machine-readable storage medium, acomputer-readable storage medium, or any suitable combination thereof)and perform any one or more of the methodologies discussed herein, inwhole or in part. Specifically, FIG. 8 shows the machine 800 in theexample form of a computer system (e.g., a computer) within which theinstructions 824 (e.g., software, a program, an application, an applet,an app, or other executable code) for causing the machine 800 to performany one or more of the methodologies discussed herein can be executed,in whole or in part. The network-based system 105, devices 130, and 140can be examples of the machine 800.

In alternative embodiments, the machine 800 operates as a standalonedevice or can be connected (e.g., networked) to other machines. In anetworked deployment, the machine 800 can operate in the capacity of aserver machine or a client machine in a server-client networkenvironment, or as a peer machine in a distributed (e.g., peer-to-peer)network environment. The machine 800 can be a server computer, a clientcomputer, a personal computer (PC), a tablet computer, a laptopcomputer, a netbook, a cellular telephone, a smartphone, a set-top box(STB), a personal digital assistant (PDA), a web appliance, a networkrouter, a network switch, a network bridge, or any machine capable ofexecuting the instructions 824, sequentially or otherwise, that specifyactions to be taken by that machine. Further, while only a singlemachine is illustrated, the term “machine” shall also be taken toinclude any collection of machines that individually or jointly executethe instructions 824 to perform all or part of any one or more of themethodologies discussed herein.

The machine 800 includes a processor 802 (e.g., a central processingunit (CPU), a graphics processing unit (GPU), a digital signal processor(DSP), an application specific integrated circuit (ASIC), aradio-frequency integrated circuit (RFIC), or any suitable combinationthereof), a main memory 804, and a static memory 806, which areconfigured to communicate with each other via a bus 808. The processor802 can contain microcircuits that are configurable, temporarily orpermanently, by some or all of the instructions 824 such that theprocessor 802 is configurable to perform any one or more of themethodologies described herein, in whole or in part. For example, a setof one or more microcircuits of the processor 802 can be configurable toexecute one or more modules (e.g., software modules) described herein.

The machine 800 can further include a graphics display 810 (e.g., aplasma display panel (PDP), a light emitting diode (LED) display, aliquid crystal display (LCD), a projector, a cathode ray tube (CRT), orany other display capable of displaying graphics or video). The machine800 can also include an alphanumeric input device 812 (e.g., a keyboardor keypad), a cursor control device 814 (e.g., a mouse, a touchpad, atrackball, a joystick, a motion sensor, an eye tracking device, oranother pointing instrument), a storage unit 816, an audio generationdevice 818 (e.g., a sound card, an amplifier, a speaker, a headphonejack, or any suitable combination thereof), and a network interfacedevice 820.

The storage unit 816 includes the machine-readable medium 822 (e.g., atangible and non-transitory machine-readable storage medium) on whichare stored the instructions 824 embodying any one or more of themethodologies or functions described herein. The instructions 824 canalso reside, completely or at least partially, within the main memory804, within the processor 802 (e.g., within the processor's cachememory), or both, before or during execution thereof by the machine 800.Accordingly, the main memory 804 and the processor 802 can be consideredmachine-readable media (e.g., tangible and non-transitorymachine-readable media). The instructions 824 can be transmitted orreceived over a network 34 via the network interface device 820. Forexample, the network interface device 820 can communicate theinstructions 824 using any one or more transfer protocols (e.g.,hypertext transfer protocol (HTTP)).

The machine-readable medium 822 can include a magnetic or optical diskstorage device, solid state storage devices such as flash memory, oranother non-volatile memory device or devices. The computer-readableinstructions stored on the computer-readable storage medium are insource code, assembly language code, object code, or another instructionformat that is interpreted by one or more processors.

In some example embodiments, the machine 800 can be a portable computingdevice, such as a smartphone or tablet computer, and have one or moreadditional input components 830 (e.g., sensors or gauges). Examples ofsuch input components 830 include an image input component (e.g., one ormore cameras), an audio input component (e.g., a microphone), adirection input component (e.g., a compass), a location input component(e.g., a global positioning system (GPS) receiver), an orientationcomponent (e.g., a gyroscope), a motion detection component (e.g., oneor more accelerometers), an altitude detection component (e.g., analtimeter), and a gas detection component (e.g., a gas sensor). Inputsharvested by any one or more of these input components can be accessibleand available for use by any of the modules described herein.

As used herein, the term “memory” refers to a machine-readable mediumable to store data temporarily or permanently and can be taken toinclude, but not be limited to, random-access memory (RAM), read-onlymemory (ROM), buffer memory, flash memory, and cache memory. While themachine-readable medium 822 is shown in an example embodiment to be asingle medium, the term “machine-readable medium” should be taken toinclude a single medium or multiple media (e.g., a centralized ordistributed database, or associated caches and servers) able to storethe instructions 824. The term “machine-readable medium” shall also betaken to include any medium, or combination of multiple media, that iscapable of storing the instructions 824 for execution by the machine800, such that the instructions 824, when executed by one or moreprocessors of the machine 800 (e.g., the processor 802), cause themachine 800 to perform any one or more of the methodologies describedherein, in whole or in part. Accordingly, a “machine-readable medium”refers to a single storage apparatus or device, as well as cloud-basedstorage systems or storage networks that include multiple storageapparatus or devices. The term “machine-readable medium” shallaccordingly be taken to include, but not be limited to, one or moretangible (e.g., non-transitory) data repositories in the form of asolid-state memory, an optical medium, a magnetic medium, or anysuitable combination thereof.

The foregoing description, for purposes of explanation, has beendescribed with reference to specific embodiments. However, theillustrative discussions above are not intended to be exhaustive or tolimit the present disclosure to the precise forms disclosed. Manymodifications and variations are possible in view of the aboveteachings. The embodiments were chosen and described in order to bestexplain the principles of the present disclosure and its practicalapplications, to thereby enable others skilled in the art to bestutilize the present disclosure and various embodiments with variousmodifications as are suited to the particular use contemplated.

Throughout this specification, plural instances can implementcomponents, operations, or structures described as a single instance.Although individual operations of one or more methods are illustratedand described as separate operations, one or more of the individualoperations can be performed concurrently, and nothing requires that theoperations be performed in the order illustrated. Structures andfunctionality presented as separate components in example configurationscan be implemented as a combined structure or component. Similarly,structures and functionality presented as a single component can beimplemented as separate components. These and other variations,modifications, additions, and improvements fall within the scope of thesubject matter herein.

Certain embodiments are described herein as including logic or a numberof components, modules, or mechanisms. Modules can constitute softwaremodules (e.g., code stored or otherwise embodied on a machine-readablemedium or in a transmission medium), hardware modules, or any suitablecombination thereof. A “hardware module” is a tangible (e.g.,non-transitory) unit capable of performing certain operations and can beconfigured or arranged in a certain physical manner. In various exampleembodiments, one or more computer systems (e.g., a standalone computersystem, a client computer system, or a server computer system) or one ormore hardware modules of a computer system (e.g., a processor or a groupof processors) can be configured by software (e.g., an application orapplication portion) as a hardware module that operates to performcertain operations as described herein.

In some embodiments, a hardware module can be implemented mechanically,electronically, or any suitable combination thereof. For example, ahardware module can include dedicated circuitry or logic that ispermanently configured to perform certain operations. For example, ahardware module can be a special-purpose processor, such as a fieldprogrammable gate array (FPGA) or an ASIC. A hardware module can alsoinclude programmable logic or circuitry that is temporarily configuredby software to perform certain operations. For example, a hardwaremodule can include software encompassed within a general-purposeprocessor or other programmable processor. It will be appreciated thatthe decision to implement a hardware module mechanically, in dedicatedand permanently configured circuitry, or in temporarily configuredcircuitry (e.g., configured by software) can be driven by cost and timeconsiderations.

Accordingly, the phrase “hardware module” should be understood toencompass a tangible entity, and such a tangible entity can bephysically constructed, permanently configured (e.g., hardwired), ortemporarily configured (e.g., programmed) to operate in a certain manneror to perform certain operations described herein. As used herein,“hardware-implemented module” refers to a hardware module. Consideringembodiments in which hardware modules are temporarily configured (e.g.,programmed), each of the hardware modules need not be configured orinstantiated at any one instance in time. For example, where a hardwaremodule comprises a general-purpose processor configured by software tobecome a special-purpose processor, the general-purpose processor can beconfigured as respectively different special-purpose processors (e.g.,comprising different hardware modules) at different times. Software(e.g., a software module) can accordingly configure one or moreprocessors, for example, to constitute a particular hardware module atone instance of time and to constitute a different hardware module at adifferent instance of time.

Hardware modules can provide information to, and receive informationfrom, other hardware modules. Accordingly, the described hardwaremodules can be regarded as being communicatively coupled. Where multiplehardware modules exist contemporaneously, communications can be achievedthrough signal transmission (e.g., over appropriate circuits and buses)between or among two or more of the hardware modules. In embodiments inwhich multiple hardware modules are configured or instantiated atdifferent times, communications between such hardware modules can beachieved, for example, through the storage and retrieval of informationin memory structures to which the multiple hardware modules have access.For example, one hardware module can perform an operation and store theoutput of that operation in a memory device to which it iscommunicatively coupled. A further hardware module can then, at a latertime, access the memory device to retrieve and process the storedoutput. Hardware modules can also initiate communications with input oroutput devices, and can operate on a resource (e.g., a collection ofinformation).

The various operations of example methods described herein can beperformed, at least partially, by one or more processors that aretemporarily configured (e.g., by software) or permanently configured toperform the relevant operations. Whether temporarily or permanentlyconfigured, such processors can constitute processor-implemented modulesthat operate to perform one or more operations or functions describedherein. As used herein, “processor-implemented module” refers to ahardware module implemented using one or more processors.

Similarly, the methods described herein can be at least partiallyprocessor-implemented, a processor being an example of hardware. Forexample, at least some of the operations of a method can be performed byone or more processors or processor-implemented modules. As used herein,“processor-implemented module” refers to a hardware module in which thehardware includes one or more processors. Moreover, the one or moreprocessors can also operate to support performance of the relevantoperations in a “cloud computing” environment or as a “software as aservice” (SaaS). For example, at least some of the operations can beperformed by a group of computers (as examples of machines includingprocessors), with these operations being accessible via a network (e.g.,the Internet) and via one or more appropriate interfaces (e.g., anapplication program interface (API)).

The performance of certain operations can be distributed among the oneor more processors, not only residing within a single machine, butdeployed across a number of machines. In some example embodiments, theone or more processors or processor-implemented modules can be locatedin a single geographic location (e.g., within a home environment, anoffice environment, or a server farm). In other example embodiments, theone or more processors or processor-implemented modules can bedistributed across a number of geographic locations.

Some portions of the subject matter discussed herein can be presented interms of algorithms or symbolic representations of operations on datastored as bits or binary digital signals within a machine memory (e.g.,a computer memory). Such algorithms or symbolic representations areexamples of techniques used by those of ordinary skill in the dataprocessing arts to convey the substance of their work to others skilledin the art. As used herein, an “algorithm” is a self-consistent sequenceof operations or similar processing leading to a desired result. In thiscontext, algorithms and operations involve physical manipulation ofphysical quantities. Typically, but not necessarily, such quantities cantake the form of electrical, magnetic, or optical signals capable ofbeing stored, accessed, transferred, combined, compared, or otherwisemanipulated by a machine. It is convenient at times, principally forreasons of common usage, to refer to such signals using words such as“data,” “content,” “bits,” “values,” “elements,” “symbols,”“characters,” “terms,” “numbers,” “numerals,” or the like. These words,however, are merely convenient labels and are to be associated withappropriate physical quantities.

Unless specifically stated otherwise, discussions herein using wordssuch as “processing,” “computing,” “calculating,” “determining,”“presenting,” “displaying,” or the like can refer to actions orprocesses of a machine (e.g., a computer) that manipulates or transformsdata represented as physical (e.g., electronic, magnetic, or optical)quantities within one or more memories (e.g., volatile memory,non-volatile memory, or any suitable combination thereof), registers, orother machine components that receive, store, transmit, or displayinformation. Furthermore, unless specifically stated otherwise, theterms “a” or “an” are herein used, as is common in patent documents, toinclude one or more than one instance. Finally, as used herein, theconjunction “or” refers to a non-exclusive “or,” unless specificallystated otherwise.

What is claimed is:
 1. A method comprising: presenting, on a display ofa device, a three-dimensional (3D) garment model draped on an avatar ofa user that mirrors a body of the user; detecting a section-specificgesture made by the user in relation to a section of the 3D garmentmodel draped on the avatar mirroring the user's body by: identifying agesture by analyzing a difference between initial and subsequent sensordata describing the body of the user from at least one sensor, theinitial sensor data received at a first time and the subsequent sensordata received at a second time, and the initial and subsequent sensordata describing the body of the user in a 3D physical space; determiningthe section of the 3D garment model draped on the avatar mirroring theuser's body based on the initial and subsequent sensor data describingthe body of the user; and determining the section-specific gesture basedon the gesture identified and the section of the 3D garment model drapedon the avatar mirroring the user's body; modifying the 3D garment modelby tailoring the section of the 3D garment model as draped on the avatarmirroring the user's body according to the section-specific gesture, thetailoring including at least one alteration that modifies the section ofthe 3D garment model, modification of the section of the 3D garmentmodel producing a custom size from a manufacturer-predefined size; andpresenting, on the display, the 3D garment model as modified.
 2. Themethod of claim 1, further comprising generating the avatar based on theinitial and subsequent sensor data.
 3. The method of claim 1, furthercomprising receiving the initial and subsequent sensor data from the atleast one sensor.
 4. The method of claim 1, further comprising drapingthe 3D garment model on the avatar, the 3D garment model generated tomodel a garment available for sale.
 5. The method of claim 1, furthercomprising: accessing the 3D garment model from a garment model databasestored in an electronic marketplace, the 3D garment model having amaterial property; calculating a simulated force acting on the 3Dgarment model based on the material property; and generating the 3Dgarment model, as draped on the avatar, based on calculation of thesimulated force.
 6. The method of claim 1, further comprisingdetermining the manufacturer-predefined size for the 3D garment modelbased on the avatar.
 7. The method of claim 1, further comprising:detecting a confirmation gesture in relation to the 3D garment model asmodified based on additional sensor data describing the body of theuser; and transmitting a request to modify a garment corresponding tothe 3D garment model and available for sale based on the confirmationgesture.
 8. The method of claim 1, wherein the initial and subsequentsensor data is received from three sensors and the three sensors arepositioned in a triangle configuration in the 3D physical space.
 9. Themethod of claim 1, wherein the initial and subsequent sensor dataincludes a two-dimensional (2D) range image, the 2D range image havingpixel values corresponding to distance information for depicted objectsin relation to the at least one sensor.
 10. The method of claim 1,wherein determining the section of the 3D garment model is based on:obtaining the initial sensor data describing the body of the user withrespect to the section of the 3D garment model; and obtaining thesubsequent sensor data describing the body of the user with respect tothe section of the 3D garment model.
 11. A system comprising: at leastone processor; and memory having stored thereon instructions that areexecutable by the at least one processor to perform operationsincluding: presenting, on a display of a device, a three-dimensional(3D) garment model draped on an avatar of a user that mirrors a body ofthe user; detecting a section-specific gesture in relation to a sectionof the 3D garment model draped on the avatar mirroring the user's bodyby: identifying a gesture by analyzing a difference between initial andsubsequent sensor data describing the body of the user, the initialsensor data received at a first time and the subsequent sensor datareceived at a second time, and the initial and subsequent sensor datadescribing the body of the user in a 3D physical space; determining thesection of the 3D garment model draped on the avatar mirroring theuser's body based on the initial and subsequent sensor data describingthe body of the user; and determining the section-specific gesture basedon the gesture identified and the section of the 3D garment model drapedon the avatar mirroring the user's body; modifying the 3D garment modelby tailoring the section of the 3D garment model as draped on the avatarmirroring the user's body according to the section-specific gesture, thetailoring including at least one alteration that modifies the section ofthe 3D garment model, modification of the section of the 3D garmentmodel producing a custom size from a manufacturer-predefined size; andpresenting, on the display, the 3D garment model.
 12. The system ofclaim 11, wherein the operations further include generating the avatarbased on the initial and subsequent sensor data.
 13. The system of claim11, wherein the operations further include draping the 3D garment modelon the avatar, the 3D garment model generated to model a garmentavailable for sale.
 14. The system of claim 11, wherein the operationsfurther include: accessing the 3D garment model from a garment modeldatabase stored in an electronic marketplace, the 3D garment modelhaving a material property; calculating a simulated force acting on the3D garment model based on the material property; and generating the 3Dgarment model, as draped on the avatar, based on calculation of thesimulated force.
 15. The system of claim 11, wherein the operationsfurther include determining the manufacturer-predefined size for the 3Dgarment model based on the avatar.
 16. The system of claim 11, whereinthe initial and subsequent sensor data is received from two sensorsarranged in the 3D physical space.
 17. A non-transitorycomputer-readable storage medium comprising instructions, which whenexecuted by one or more processors of a computing device, cause thecomputing device to perform operations including: presenting, on adisplay of a device, a three-dimensional (3D) garment model draped on anavatar of a user that mirrors a body of the user; detecting asection-specific gesture in relation to a section of the 3D garmentmodel draped on the avatar mirroring the user's body by: identifying agesture by analyzing a difference between initial and subsequent sensordata describing the body of the user, the initial sensor data receivedat a first time and the subsequent sensor data received at a secondtime, and the initial and subsequent sensor data describing the body ofthe user in a 3D physical space; determining the section of the 3Dgarment model draped on the avatar mirroring the user's body based onthe initial and subsequent sensor data describing the body of the user;and determining the section-specific gesture based on the gestureidentified and the section of the 3D garment model draped on the avatarmirroring the user's body; modifying the 3D garment model by tailoringthe section of the 3D garment model as draped on the avatar mirroringthe user's body according to the section-specific gesture, the tailoringincluding at least one alteration that modifies the section of the 3Dgarment model, modification of the section of the 3D garment modelproducing a custom size from a manufacturer-predefined size; andpresenting, on the display, the 3D garment model.
 18. Thecomputer-readable storage medium of claim 17, wherein the operationsfurther include generating the avatar based on the initial andsubsequent sensor data.
 19. The computer-readable storage medium ofclaim 17, wherein the operations further include receiving the initialand subsequent sensor data from one or more sensors.
 20. Thecomputer-readable storage medium of claim 17, wherein the operationsfurther include draping the 3D garment model on the avatar, the 3Dgarment model generated to model a garment available for sale.